Web Application HTTPS Data Flow
🔄 전체 데이터 흐름도
사용자/브라우저 -> [HTTPS 요청] -> Nginx 웹서버:443
|
[SSL 암호화/복호화]
|
[Proxy 전달]
|
Node.js:3000
|
[응답]
|
[SSL 암호화된 응답]
|
사용자/브라우저
📝 상세 단계 설명
1. 클라이언트 요청 단계
사용자 -> [http://도메인] -> Nginx:80 -> [리다이렉트] -> Nginx:443
사용자 -> [https://도메인] ------------------> Nginx:443
- HTTP(80) 요청 시 자동으로 HTTPS(443)로 리다이렉트
- HTTPS 요청 시 SSL/TLS 핸드셰이크 수행
2. SSL/TLS 처리
브라우저 -> [SSL 핸드셰이크 시작] -> Nginx
<- [인증서 전송] <-
-> [대칭키 교환] ->
<- [암호화 통신 시작] ->
- Let's Encrypt SSL 인증서 사용
- TLS 1.2/1.3 프로토콜 적용
3. 프록시 처리
Nginx:443 -> [내부 전달] -> Node.js:3000
<- [응답] <-
- Nginx가 모든 요청을 Node.js 서버로 프록시
- 헤더 정보 포함하여 전달
🔒 보안 계층
사용자 데이터 -> [SSL/TLS 암호화] -> 전송 계층 -> [Nginx 프록시] -> 애플리케이션 계층
🌐 DNS 연결
도메인 -> [DNS 조회] -> 공인 IP -> [포트 포워딩] -> Nginx:443
이러한 구조로 인해:
- 모든 통신이 암호화되어 보안성 확보
- 효율적인 트래픽 관리
- 안정적인 서비스 제공
- 확장성 있는 구조 유지
주요 포트 정리:
- 80: HTTP (리다이렉트용)
- 443: HTTPS (메인 서비스)
- 3000: Node.js 내부 서버
💡 이 구조에서 Nginx는 리버스 프록시 역할을 수행하며, SSL 종단점(SSL Termination Point)으로 작동합니다.